import _ from "lodash";
import Config from "../config.js";
import Upload from "./upload.js";
import Util from "./util.js";

/**
 * 图片操作相关工具类
 */
var image = _.extend({}, _, {
    /**
     * 删除上传时产生的临时文件
     * @param {Object} filePath 文件完整路径
     */
    deleteTmpFile(filePath) {
        window.plus.io.resolveLocalFileSystemURL(
            filePath,
            function(entry) {
                // 可通过entry对象操作文件
                entry.remove(
                    function(e) {
                        console.log("删除文件成功");
                    },
                    function(e) {
                        console.log(e.message);
                    }
                );
            },
            function(e) {
                console.log("Resolve file URL failed: " + e.message);
            }
        );
    },

    /**
     * 图片上传
     * @param {Object} filePath 图片全路径
     * @param {Object} dataKey 业务主键，如用户ID等
     * @param {Object} type Java后台需要用到，附件类型，字符串，参考AttachementType枚举
     * @param {Object} successCallback 上传成功的回调，可带一个参数接收服务器返回的数据
     * @param {Object} dataType .NET后台需要用到
     */
    uploadImage(filePath, dataKey, type, successCallback, dataType) {
        Upload.upload(filePath, dataKey, type, successCallback, dataType);
    },

    /**
     * 选择图片
     * @param {*} title 显示的标题
     * @param {*} gotCallback 选择图片之后的回调函数
     */
    selectImage(title, gotCallback) {
        let self = this;
        window.plus.nativeUI.actionSheet(
            {
                title: title,
                cancel: "取消",
                buttons: [
                    {
                        title: "拍摄"
                    },
                    {
                        title: "从相册选择"
                    }
                ]
            },
            function(e) {
                if (e.index == 1) {
                    // 拍摄
                    self.cameraImage(gotCallback);
                } else if (e.index == 2) {
                    // 从相册选取
                    self.galleryImg(gotCallback);
                }
            }
        );
    },

    /**
     * 拍照
     * @param {*} gotCallback 拍照之后的回调函数
     */
    cameraImage(gotCallback) {
        console.log("开始拍照：");
        var filename = "_doc/" + "camera/" + Util.random() + ".jpg";
        var cmr = window.plus.camera.getCamera();
        cmr.captureImage(
            function(p) {
                console.log("成功：" + p);
                window.plus.io.resolveLocalFileSystemURL(
                    p,
                    function(entry) {
                        var path = entry.fullPath;
                        if (gotCallback) {
                            gotCallback(path, true);
                        }
                    },
                    function(e) {
                        console.error("读取拍照文件错误：" + e.message);
                    }
                );
            },
            function(e) {
                console.error("失败：" + e.message);
            },
            {
                filename: filename,
                index: 1
            }
        );
    },

    /**
     * 相册选择图片
     * @param {*} gotCallback 选择图片之后的回调函数
     */
    galleryImg(gotCallback) {
        console.log("从相册中选择图片：");
        window.plus.gallery.pick(
            // function(e) {
            //     for (var i in e.files) {
            //         if (gotCallback) {
            //             gotCallback(e.files[i], false);
            //         }
            //     }
            // },
            function(path) {
                if (gotCallback) {
                    gotCallback(path, false);
                }
            },
            function(e) {
                console.log("取消选择图片");
            },
            {
                filter: "image"
                // multiple: true
            }
        );
    }
});

export default image;
